/**
 * 封装一个函数: readDIR
 * 参数:   dir
 * 返回:   [
 *            {file:'index.html', mtime: '2024-02-05', size: '4KB', isdir: false}
 *            {file:'home.html',  mtime: '2024-02-06', size: '5KB', isdir: false}
 *         ]
 */
//导入 fs 模块
const fs = require('fs');

//用来格式化文件大小的单位
function formatFileSize(bytes) {
  if (bytes < 1024) {
    return bytes + "B";
  } else if (bytes < 1048576) {
    return (bytes / 1024).toFixed(2) + "KB";
  } else {
    return (bytes / 1048576).toFixed(2) + "MB";
  }
}

//用来格式化时间
function formatDateTime(date) {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, "0");
  const day = String(date.getDate()).padStart(2, "0");
  const hours = String(date.getHours()).padStart(2, "0");
  const minutes = String(date.getMinutes()).padStart(2, "0");
  
  return `${year}/${month}/${day} ${hours}:${minutes}`;
}

function readDIR(dir){
  //判断
  //判断 dir 最后一位是否为斜线
  // if(dir[dir.length-1] === '/')
  // if(dir.slice(-1) === '/'){
  //判断 dir 最后一位是否为斜线
  if(!dir.endsWith('/')){
    dir = dir + '/';
  }
  // console.log(dir);
  //读取文件夹中的所有的资源
  let files = fs.readdirSync(dir);
  //对数组元素进行处理
  let result = files.map(item => {
    //拼接当前资源的路径
    let path = dir + item;
    //获取当前资源的详细信息
    let stats = fs.statSync(path);
    return {
      filename: item,
      size: formatFileSize(stats.size),
      mtime: formatDateTime(stats.mtime),
      isdir: stats.isDirectory()
    }
  });
  return result;
}

//读取当前文件夹
// readDIR('.');

//读取指定文件夹
readDIR('d:/www');